use key_value::{KeyValueTool, FilePersistenceImpl};

fn main() {
    let mut key_value_tool = key_value::new("testproject.gkv");
    println!("project_name : {} ", key_value_tool.get_project_name());

    // 测试各种值
    key_value_tool.set("test1", true);
    key_value_tool.set("test2", 123i8);
    key_value_tool.set("test3", 123i32);
    key_value_tool.set("test4", 1233424423432423i64);
    key_value_tool.set("test5", 1.234f32);
    key_value_tool.set("test6", 1.234f64);
    key_value_tool.set("test7", "stringtest");



    // 遍历
    key_value_tool.for_echo(|key:&str, v_type : &key_value::ValueType, value : &String|{
        println!("key : {} , Type : {} , Value : {}" , key , v_type.to_string() , value.as_str());
    }, false );


    // 确定类型
    let get_type = key_value_tool.get_type("test3");
    // 根据类型选择值
    let get_value = key_value_tool.get_int32("test3");
    println!("type : {} , value : {} ", get_type.unwrap() , get_value.unwrap());

    key_value_tool.save();

    let mut key_value_tool2 = key_value::new("testproject.gkv");
    key_value_tool2.load();


    key_value_tool2.for_echo(|key:&str, v_type : &key_value::ValueType, value : &String|{
        println!("key : {} , Type : {} , Value : {}" , key , v_type.to_string() , value.as_str());
    }, false );
}
